package com.zedeff.twittererer.utils;
import com.zedeff.twittererer.models.TimelineItem;
import com.zedeff.twittererer.models.User;
import com.twitter.sdk.android.core.models.Tweet;
import org.joda.time.DateTime;
import org.joda.time.Days;
import org.joda.time.Hours;
import org.joda.time.Minutes;
import org.joda.time.Seconds;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
public final class TimelineConverter {
public static final String DATE_TIME_FORMAT = "EEE MMM dd HH:mm:ss Z yyyy";
private TimelineConverter() {}
public static List<TimelineItem> fromTweets(List<Tweet> tweets, DateTime now) {
List<TimelineItem> timelineItems = new ArrayList<>();
for (Tweet t : tweets) {
User u = new User(t.user.name, t.user.screenName, t.user.profileImageUrl);
timelineItems.add(new TimelineItem(TimelineConverter.dateToAge(t.createdAt, now), t.text, u));
}
return timelineItems;
}
private static String dateToAge(String createdAt, DateTime now) {
if (createdAt == null) {
return "";
}
DateTimeFormatter dtf = DateTimeFormat.forPattern(DATE_TIME_FORMAT);
try {
DateTime created = dtf.parseDateTime(createdAt);
if (Seconds.secondsBetween(created, now).getSeconds() < 60) {
return Seconds.secondsBetween(created, now).getSeconds() + "s";
} else if (Minutes.minutesBetween(created, now).getMinutes() < 60) {
return Minutes.minutesBetween(created, now).getMinutes() + "m";
} else if (Hours.hoursBetween(created, now).getHours() < 24) {
return Hours.hoursBetween(created, now).getHours() + "h";
} else {
return Days.daysBetween(created, now).getDays() + "d";
}
} catch (IllegalArgumentException e) {
return "";
}
}
}